home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Softdisk Magazette Volume 2, No. 04 (1982-12)(Softdisk)(Side B).zip / Softdisk Magazette Volume 2, No. 04 (1982-12)(Softdisk)(Side B).do / A-MAZE-ING.bas next >
BASIC Source File  |  1996-12-24  |  5KB  |  123 lines

  1. 10  REM  MAZE GAME
  2. 15  REM  CONTRIBUTED TO PUBLIC DOMAIN BY DAVE GARSON
  3. 20  REM  INITIALIZING
  4. 30  TEXT : HOME : SPEED= 255
  5. 40  REM  TITLE
  6. 50  VTAB 11: HTAB 13
  7. 60  PRINT "A - MAZE - ING"
  8. 70  FOR PAUSE = 1 TO 2500: NEXT : HOME 
  9. 74 TIME = 0
  10. 75 WIN = 0:BUMPS = 0:SCRE = 0
  11. 80 TALLY = 1: REM  INITIALIZE FOR SCOREKEEPING
  12. 90  TEXT 
  13. 100  HOME : VTAB 6: PRINT "DO YOU WISH TO GUARANTEE THE MAZE HAS A    SOLUTION? (THIS MAY MAKE THE MAZE       MORE OBVIOUS): ";: INPUT "";GUARANTEE$
  14. 110  IF  LEFT$(GUARANTEE$,1) = "Y"  THEN GUARANTEE = 1
  15. 120  PRINT : PRINT : PRINT 
  16. 130  PRINT "DO YOU WISH TO SEE THE MAZE BEING          DRAWN? (THIS, TOO, MAKES THE GAME       EASIER): ";
  17. 134  INPUT "";SEE$
  18. 140  IF  LEFT$(SEE$,1) = "N"  THEN SEE = 1
  19. 200  GOTO 2000: REM  DRAW MAZE
  20. 300  GOTO 3000: REM   THE ACTUAL GAME
  21. 900  END 
  22. 2000  REM  DRAW MAZE
  23. 2005  GR 
  24. 2010  IF SEE  THEN  POKE  -16299,0: POKE  -16302,0: REM  STARE AT PAGE 2
  25. 2020  COLOR= 13: REM  YELLOW
  26. 2040  REM   DRAW RANDOM MAZE ON 40 BY 40 LORES SCREEN (40 TIMES 40 IS 1600, SO WE'LLCOLOR IN ABOUT 600 SPOTS)  
  27. 2050  FOR SPOT = 1 TO 700
  28. 2060 X =  INT( RND(1) *40): REM  RANDOM NUMBER FROM 0 TO 39
  29. 2070 Y =  INT( RND(1) *40)
  30. 2080  IF X <6  AND Y <6  OR X >33  AND Y >33  THEN 2060: REM  DON'T PAINT IF SPOT IS IN CORNERS
  31. 2090  PLOT X,Y: NEXT 
  32. 2100  REM  PAINT START (GREEN) IN UPPER LEFT AND END (RED) IN LOWER RIGHT
  33. 2110  COLOR= 12: REM   GREEN   
  34. 2120  FOR X = 0 TO 2: FOR Y = 0 TO 2
  35. 2130  PLOT X,Y: NEXT : NEXT 
  36. 2140  COLOR= 1: REM   RED (ACTUALLY, MAGENTA)   
  37. 2150  FOR X = 37 TO 39: FOR Y = 37 TO 39
  38. 2160  PLOT X,Y: NEXT : NEXT 
  39. 2165  COLOR= 15: PLOT 3,3: REM  DRAW WHITE MAN AT START POSITION  
  40. 2168  IF GUARANTEE  THEN  GOSUB 2200: REM  ASSURE A SOLUTION
  41. 2170  REM  PRINT INSTRUCTIONS REMINDER
  42. 2175  IF SEE  THEN  POKE  -16300,1: POKE  -16301,0: REM  SEE MAZE 
  43. 2180  VTAB 21: PRINT "USE I-J-K-M DIAMOND TO MOVE YOUR WHITE"
  44. 2190  PRINT "MAN FROM START (GREEN) TO END (RED)"
  45. 2195  PRINT "WITHOUT HITTING THE MAZE WALLS!"
  46. 2197  PRINT "TYPE ANY KEY TO CONTINUE. ";: GET X$
  47. 2198  POKE  -16368,0: HOME : VTAB 21: REM  CLEAR KEYBOARD AND SCREEN
  48. 2199  GOTO 300
  49. 2200  REM  ASSURE MAZE HAS A SOLUTION
  50. 2205 X = 3:Y = 3
  51. 2208  COLOR= 0
  52. 2210 T =  INT( RND(1) *6 +1)
  53. 2220  ON T GOSUB 2300,2300,2310,2320,2320,2330
  54. 2230  IF  SCRN( X,Y) = 1  THEN X = 3:Y = 3: COLOR= 15: GOTO 2800
  55. 2250  GOTO 2210
  56. 2300  FOR M = 1 TO 3
  57. 2302 X = X +1
  58. 2304  IF X >39  THEN X = 39
  59. 2305  IF  SCRN( X,Y) = 1  THEN 2230
  60. 2306  PLOT X,Y: NEXT : RETURN 
  61. 2310  FOR M = 1 TO 2
  62. 2312 X = X -1
  63. 2314  IF X <0  THEN X = 0
  64. 2315  IF  SCRN( X,Y) = 1  THEN 2230
  65. 2316  PLOT X,Y: NEXT : RETURN 
  66. 2320  FOR M = 1 TO 3
  67. 2322 Y = Y +1
  68. 2324  IF Y >39  THEN Y = 39
  69. 2325  IF  SCRN( X,Y) = 1  THEN 2230
  70. 2326  PLOT X,Y: NEXT : RETURN 
  71. 2330  FOR M = 1 TO 2
  72. 2332 Y = Y -1
  73. 2334  IF Y <0  THEN Y = 0
  74. 2335  IF  SCRN( X,Y) = 1  THEN 2230
  75. 2336  PLOT X,Y: NEXT : RETURN 
  76. 2800  GOTO 2170
  77. 3000  REM  THE GAME ITSELF
  78. 3010 UP = 73:DOWN = 77:LEFT = 74:RIGHT = 75: REM  ASCII CODES FOR I-J-K-M
  79. 3020 X = 3:Y = 3: REM  START POSITION
  80. 3200  REM  MOVE MAN
  81. 3210 Z =  PEEK( -16384): REM  READ KEYBOARDS
  82. 3211  IF Z >127  THEN Z = Z -128: REM  CONVERT UPPER CASE FOR MACHINES WITH ADAPTERS
  83. 3212  POKE  -16368,0: REM  CLEAR KEYBOARD
  84. 3213  POKE  -16384,0
  85. 3214  IF Z = 73  OR Z = 74  OR Z = 75  OR Z = 77  THEN 3225
  86. 3216  VTAB 22: HTAB 1
  87. 3218 TIME = TIME +1
  88. 3220  PRINT "TIME = "TIME;
  89. 3221  FOR PAUSE = 1 TO 100: NEXT 
  90. 3222  GOTO 3200
  91. 3225  REM  MOVE BY CHANGING X AND Y COORDINATES OF THE WHITE MAN
  92. 3228 XOLD = X:YOLD = Y: REM  SAVE OLD X AND Y
  93. 3229  GOSUB 3700: REM  ERASE OLD MAN
  94. 3230  IF Z = LEFT  THEN X = X -1: IF X <0  THEN X = 0
  95. 3240  IF Z = RIGHT  THEN X = X +1: IF X >39  THEN X = 39
  96. 3250  IF Z = UP  THEN Y = Y -1: IF Y <0  THEN Y = 0
  97. 3260  IF Z = DOWN  THEN Y = Y +1: IF Y >39  THEN Y = 39
  98. 3270  GOSUB 3800: REM  CHECK TO SEE IF MAZE WALL CRASHED INTO
  99. 3280  GOSUB 3850: REM  SEE IF GOAL REACHED
  100. 3285  IF WIN = 1  THEN  IF HISCRE <SCRE  THEN HISCRE = SCRE
  101. 3290  IF WIN = 1  THEN  VTAB 24: PRINT "HIGH SCORE = "HISCRE;: HTAB 26: PRINT "ANOTHER GAME? ";: GET ANS$
  102. 3292  IF WIN = 1  AND ANS$ = "Y"  THEN  HOME : GOTO 74
  103. 3294  IF WIN = 1  THEN  TEXT : HOME : VTAB 2: PRINT "BYE!": PRINT : END 
  104. 3300  PLOT X,Y
  105. 3400  FOR PAUSE = 1 TO 200: NEXT 
  106. 3425 TIME = TIME +1
  107. 3440 BUMPS = TALLY -1
  108. 3445 SCRE =  INT(1000000/(TIME *TALLY))
  109. 3450  VTAB 22: HTAB 1: PRINT "TIME ="TIME;: HTAB 16: PRINT "BUMPS = "BUMPS;: HTAB 27: PRINT "SCORE = "SCRE;: CALL  -868: REM      CLEAR LINE TO RIGHT  
  110. 3500  GOTO 3200
  111. 3700  COLOR= 0: REM  BLACK
  112. 3710  PLOT X,Y
  113. 3720  COLOR= 15: RETURN 
  114. 3800  REM  CHECK FOR MAZE WALL CRASH
  115. 3810  IF  SCRN( X,Y) = 13  THEN TALLY = TALLY +1: GOSUB 3900:X = XOLD:Y = YOLD: REM     PENALTY, SOUND BUZZER, RESET X,Y
  116. 3820  RETURN 
  117. 3850  REM  SEE IF GOAL REACHED
  118. 3860  IF  SCRN( X,Y) = 1  THEN  VTAB 23: HTAB 14: INVERSE : PRINT "YOU DID IT!": NORMAL :WIN = 1
  119. 3870  RETURN 
  120. 3900  REM  BUZZER
  121. 3910  FOR I = 1 TO 5
  122. 3920 S =  PEEK( -16336): REM  THE SPEAKER   
  123. 3930  NEXT : RETURN